﻿Imports System
Imports System.ComponentModel
Imports System.Security
Imports System.Security.Permissions
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.Design
Imports System.Web.UI.WebControls
Imports System.ComponentModel.Design
Imports System.Data.SqlClient
Imports System.Drawing
Imports System.Drawing.Design

<Assembly: TagPrefix("Lnc.Web.Social.Facebook.OpenGraph", "og")> 
Namespace Facebook.OpenGraph

#Region "Controles"

    Public Enum Types
        Activities_Activity
        Activities_Sport
        Businesses_Bar
        Businesses_Company
        Businesses_Cafe
        Businesses_Hotel
        Businesses_Restaurant
        Groups_Cause
        Groups_Sports_League
        Groups_Sports_Team
        Organizations_Band
        Organizations_Goverment
        Organizations_Non_Profit
        Organizations_School
        Organizations_University
        People_Actor
        People_Athlete
        People_Author
        People_Director
        People_Musician
        People_Politician
        People_Public_Figure
        Places_City
        Places_Country
        Places_Landmark
        Places_State_Province
        ProductsAndEntertainment_Album
        ProductsAndEntertainment_Book
        ProductsAndEntertainment_Drink
        ProductsAndEntertainment_Food
        ProductsAndEntertainment_Game
        ProductsAndEntertainment_Product
        ProductsAndEntertainment_Song
        ProductsAndEntertainment_Movie
        ProductsAndEntertainment_Tv_Show
        Websites_Blog
        Websites_Website
        Websites_Article
        Other
    End Enum

    ''' <summary>
    ''' Titulo de la pagina, entendible para Facebook
    ''' </summary>
    ''' <remarks>
    ''' Para poder utilizar los controles sociales de Facebook, es necesario incluir los siguientes espacios de nombres xml
    ''' en el encabezado de la página:
    ''' 
    ''' xmlns:fb="http://ogp.me/ns/fb#" (Controles Facebook)
    ''' xmlns:og="http://ogp.me/ns#"    (Controles OpenGraph)
    ''' 
    ''' El equipo de LNC Producciones
    ''' </remarks>
    <Designer(GetType(TitleDesigner)), _
    Description("Titulo de la pagina, entendible para Facebook"), _
    AspNetHostingPermission( _
    SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal), _
    AspNetHostingPermission( _
    SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal), _
    Utils.ToolboxTabName("FB.OpenGraph"), _
    ToolboxData("<{0}:Title runat=""server""></{0}:Title>")> _
    <ToolboxBitmap(GetType(ResourceFinder), "FbSdkScript.bmp")> _
    Public Class Title
        Inherits WebControl

#Region "Propiedades"
        Public Property Content As String = ""
#End Region

#Region "Constructores"
        Public Sub New()
            MyBase.New()
        End Sub

        Public Sub New(ByVal Value As String)
            MyBase.New()
            Content = Value
        End Sub
#End Region

#Region "Metodos"
        Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
            writer.WriteLine("<meta property=""og:title"" content=""" & Content & """ />")
        End Sub
#End Region

    End Class

    ''' <summary>
    ''' Tipo de contenido, entendible para Facebook
    ''' </summary>
    ''' <remarks>
    ''' Para poder utilizar los controles sociales de Facebook, es necesario incluir los siguientes espacios de nombres xml
    ''' en el encabezado de la página:
    ''' 
    ''' xmlns:fb="http://ogp.me/ns/fb#" (Controles Facebook)
    ''' xmlns:og="http://ogp.me/ns#"    (Controles OpenGraph)
    ''' 
    ''' El equipo de LNC Producciones
    ''' </remarks>
    <Designer(GetType(TitleDesigner)), _
    Description("Tipo de contenido, entendible para Facebook"), _
    AspNetHostingPermission( _
    SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal), _
    AspNetHostingPermission( _
    SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal), _
    Utils.ToolboxTabName("FB.OpenGraph"), _
    ToolboxData("<{0}:Type runat=""server""></{0}:Type>")> _
    <ToolboxBitmap(GetType(ResourceFinder), "FbSdkScript.bmp")> _
    Public Class Type
        Inherits WebControl

#Region "Propiedades"
        Public Property Content As Types = Types.Websites_Article
#End Region

#Region "Constructores"
        Public Sub New()
            MyBase.New()
        End Sub

        Public Sub New(ByVal Value As String)
            MyBase.New()
            Content = Value
        End Sub
#End Region

#Region "Metodos"
        Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
            writer.WriteLine("<meta property=""og:title"" content=""" & GetContent() & """ />")
        End Sub
#End Region

#Region "Funciones"
        Private Function GetContent() As String
            Select Case Content
                Case Types.Activities_Activity : Return "activity"
                Case Types.Activities_Sport : Return "sport"
                Case Types.Businesses_Bar : Return "bar"
                Case Types.Businesses_Cafe : Return "cafe"
                Case Types.Businesses_Company : Return "company"
                Case Types.Businesses_Hotel : Return "hotel"
                Case Types.Businesses_Restaurant : Return "restaurant"
                Case Types.Groups_Cause : Return "cause"
                Case Types.Groups_Sports_League : Return "sports_league"
                Case Types.Groups_Sports_Team : Return "sports_team"
                Case Types.Organizations_Band : Return "band"
                Case Types.Organizations_Goverment : Return "goverment"
                Case Types.Organizations_Non_Profit : Return "non_profit"
                Case Types.Organizations_School : Return "school"
                Case Types.Organizations_University : Return "university"
                Case Types.Other : Return "other"
                Case Types.People_Actor : Return "actor"
                Case Types.People_Athlete : Return "athlete"
                Case Types.People_Author : Return "author"
                Case Types.People_Director : Return "director"
                Case Types.People_Musician : Return "musician"
                Case Types.People_Politician : Return "politician"
                Case Types.People_Public_Figure : Return "public_figure"
                Case Types.Places_City : Return "city"
                Case Types.Places_Country : Return "country"
                Case Types.Places_Landmark : Return "landmark"
                Case Types.Places_State_Province : Return "state_province"
                Case Types.ProductsAndEntertainment_Album : Return "album"
                Case Types.ProductsAndEntertainment_Book : Return "book"
                Case Types.ProductsAndEntertainment_Drink : Return "drink"
                Case Types.ProductsAndEntertainment_Food : Return "food"
                Case Types.ProductsAndEntertainment_Game : Return "game"
                Case Types.ProductsAndEntertainment_Movie : Return "movie"
                Case Types.ProductsAndEntertainment_Product : Return "product"
                Case Types.ProductsAndEntertainment_Song : Return "song"
                Case Types.ProductsAndEntertainment_Tv_Show : Return "tv_show"
                Case Types.Websites_Article : Return "article"
                Case Types.Websites_Blog : Return "blog"
                Case Types.Websites_Website : Return "website"
                Case Else : Return "other"
            End Select
        End Function
#End Region

    End Class

    ''' <summary>
    ''' Miniatura de la pagina, entendible para Facebook
    ''' </summary>
    ''' <remarks>
    ''' Para poder utilizar los controles sociales de Facebook, es necesario incluir los siguientes espacios de nombres xml
    ''' en el encabezado de la página:
    ''' 
    ''' xmlns:fb="http://ogp.me/ns/fb#" (Controles Facebook)
    ''' xmlns:og="http://ogp.me/ns#"    (Controles OpenGraph)
    ''' 
    ''' El equipo de LNC Producciones
    ''' </remarks>
    <Designer(GetType(TitleDesigner)), _
    Description("Miniatura de la pagina, entendible para Facebook"), _
    AspNetHostingPermission( _
    SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal), _
    AspNetHostingPermission( _
    SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal), _
    Utils.ToolboxTabName("FB.OpenGraph"), _
    ToolboxData("<{0}:Image runat=""server""></{0}:Image>")> _
    <ToolboxBitmap(GetType(ResourceFinder), "FbSdkScript.bmp")> _
    Public Class Image
        Inherits WebControl

#Region "Propiedades"
        Public Property Content As String = ""
#End Region

#Region "Constructores"
        Public Sub New()
            MyBase.New()
        End Sub

        Public Sub New(ByVal Value As String)
            MyBase.New()
            Content = Value
        End Sub
#End Region

#Region "Metodos"
        Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
            writer.WriteLine("<meta property=""og:image"" content=""" & Content & """ />")
        End Sub
#End Region

    End Class

    ''' <summary>
    ''' URL de la pagina, entendible para Facebook
    ''' </summary>
    ''' <remarks>
    ''' Para poder utilizar los controles sociales de Facebook, es necesario incluir los siguientes espacios de nombres xml
    ''' en el encabezado de la página:
    ''' 
    ''' xmlns:fb="http://ogp.me/ns/fb#" (Controles Facebook)
    ''' xmlns:og="http://ogp.me/ns#"    (Controles OpenGraph)
    ''' 
    ''' El equipo de LNC Producciones
    ''' </remarks>
    <Designer(GetType(TitleDesigner)), _
    Description("URL de la pagina, entendible para Facebook"), _
    AspNetHostingPermission( _
    SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal), _
    AspNetHostingPermission( _
    SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal), _
    Utils.ToolboxTabName("FB.OpenGraph"), _
    ToolboxData("<{0}:Url runat=""server""></{0}:Url>")> _
    <ToolboxBitmap(GetType(ResourceFinder), "FbSdkScript.bmp")> _
    Public Class Url
        Inherits WebControl

#Region "Propiedades"
        Public Property Content As String = ""
#End Region

#Region "Constructores"
        Public Sub New()
            MyBase.New()
        End Sub

        Public Sub New(ByVal Value As String)
            MyBase.New()
            Content = Value
        End Sub
#End Region

#Region "Metodos"
        Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
            writer.WriteLine("<meta property=""og:url"" content=""" & Content & """ />")
        End Sub
#End Region

    End Class

    ''' <summary>
    ''' Nombre del sitio de la pagina, entendible para Facebook
    ''' </summary>
    ''' <remarks>
    ''' Para poder utilizar los controles sociales de Facebook, es necesario incluir los siguientes espacios de nombres xml
    ''' en el encabezado de la página:
    ''' 
    ''' xmlns:fb="http://ogp.me/ns/fb#" (Controles Facebook)
    ''' xmlns:og="http://ogp.me/ns#"    (Controles OpenGraph)
    ''' 
    ''' El equipo de LNC Producciones
    ''' </remarks>
    <Designer(GetType(TitleDesigner)), _
    Description("Nombre del sitio de la pagina, entendible para Facebook"), _
    AspNetHostingPermission( _
    SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal), _
    AspNetHostingPermission( _
    SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal), _
    Utils.ToolboxTabName("FB.OpenGraph"), _
    ToolboxData("<{0}:SiteName runat=""server""></{0}:SiteName>")> _
    <ToolboxBitmap(GetType(ResourceFinder), "FbSdkScript.bmp")> _
    Public Class SiteName
        Inherits WebControl

#Region "Propiedades"
        Public Property Content As String = ""
#End Region

#Region "Constructores"
        Public Sub New()
            MyBase.New()
        End Sub

        Public Sub New(ByVal Value As String)
            MyBase.New()
            Content = Value
        End Sub
#End Region

#Region "Metodos"
        Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
            writer.WriteLine("<meta property=""og:site_name"" content=""" & Content & """ />")
        End Sub
#End Region

    End Class

    ''' <summary>
    ''' REQUERIDO: Id de la aplicación de Facebook
    ''' </summary>
    ''' <remarks>
    ''' Para poder utilizar los controles sociales de Facebook, es necesario incluir los siguientes espacios de nombres xml
    ''' en el encabezado de la página:
    ''' 
    ''' xmlns:fb="http://ogp.me/ns/fb#" (Controles Facebook)
    ''' xmlns:og="http://ogp.me/ns#"    (Controles OpenGraph)
    ''' 
    ''' El equipo de LNC Producciones
    ''' </remarks>
    <Designer(GetType(TitleDesigner)), _
    Description("REQUERIDO: Id de la aplicación de Facebook"), _
    AspNetHostingPermission( _
    SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal), _
    AspNetHostingPermission( _
    SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal), _
    Utils.ToolboxTabName("FB.OpenGraph"), _
    ToolboxData("<{0}:AppId runat=""server""></{0}:AppId>")> _
    <ToolboxBitmap(GetType(ResourceFinder), "FbSdkScript.bmp")> _
    Public Class AppId
        Inherits WebControl

#Region "Constructores"
        Public Sub New()
            MyBase.New()
        End Sub
#End Region

#Region "Metodos"
        Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
            writer.WriteLine("<meta property=""og:app_id"" content=""199842536770274"" />")
        End Sub
#End Region

    End Class

    ''' <summary>
    ''' Descripcion de la pagina, entendible para Facebook
    ''' </summary>
    ''' <remarks>
    ''' Para poder utilizar los controles sociales de Facebook, es necesario incluir los siguientes espacios de nombres xml
    ''' en el encabezado de la página:
    ''' 
    ''' xmlns:fb="http://ogp.me/ns/fb#" (Controles Facebook)
    ''' xmlns:og="http://ogp.me/ns#"    (Controles OpenGraph)
    ''' 
    ''' El equipo de LNC Producciones
    ''' </remarks>
    <Designer(GetType(TitleDesigner)), _
    Description("Descripcion de la pagina, entendible para Facebook"), _
    AspNetHostingPermission( _
    SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal), _
    AspNetHostingPermission( _
    SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal), _
    Utils.ToolboxTabName("FB.OpenGraph"), _
    ToolboxData("<{0}:Description runat=""server""></{0}:Description>")> _
    <ToolboxBitmap(GetType(ResourceFinder), "FbSdkScript.bmp")> _
    Public Class Description
        Inherits WebControl

#Region "Propiedades"
        Public Property Content As String = ""
#End Region

#Region "Constructores"
        Public Sub New()
            MyBase.New()
        End Sub

        Public Sub New(ByVal Value As String)
            MyBase.New()
            Content = Value
        End Sub
#End Region

#Region "Metodos"
        Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
            writer.WriteLine("<meta property=""og:description"" content=""" & Content & """ />")
        End Sub
#End Region

    End Class

    ''' <summary>
    ''' Direccion fisica de la pagina, entendible para Facebook
    ''' </summary>
    ''' <remarks>
    ''' Para poder utilizar los controles sociales de Facebook, es necesario incluir los siguientes espacios de nombres xml
    ''' en el encabezado de la página:
    ''' 
    ''' xmlns:fb="http://ogp.me/ns/fb#" (Controles Facebook)
    ''' xmlns:og="http://ogp.me/ns#"    (Controles OpenGraph)
    ''' 
    ''' El equipo de LNC Producciones
    ''' </remarks>
    <Designer(GetType(TitleDesigner)), _
    Description("Direccion fisica de la pagina, entendible para Facebook"), _
    AspNetHostingPermission( _
    SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal), _
    AspNetHostingPermission( _
    SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal), _
    Utils.ToolboxTabName("FB.OpenGraph"), _
    ToolboxData("<{0}:StreetAddress runat=""server""></{0}:StreetAddress>")> _
    <ToolboxBitmap(GetType(ResourceFinder), "FbSdkScript.bmp")> _
    Public Class StreetAddress
        Inherits System.Web.UI.WebControls.Literal

#Region "Propiedades"
        Public Property Content As String = ""
#End Region

#Region "Constructores"
        Public Sub New()
            MyBase.New()
        End Sub

        Public Sub New(ByVal Value As String)
            MyBase.New()
            Content = Value
        End Sub
#End Region

#Region "Metodos"
        Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
            writer.WriteLine("<meta property=""og:street-address"" content=""" & Content & """ />")
        End Sub
#End Region

    End Class

    ''' <summary>
    ''' Ciudad de origen de la pagina, entendible para Facebook
    ''' </summary>
    ''' <remarks>
    ''' Para poder utilizar los controles sociales de Facebook, es necesario incluir los siguientes espacios de nombres xml
    ''' en el encabezado de la página:
    ''' 
    ''' xmlns:fb="http://ogp.me/ns/fb#" (Controles Facebook)
    ''' xmlns:og="http://ogp.me/ns#"    (Controles OpenGraph)
    ''' 
    ''' El equipo de LNC Producciones
    ''' </remarks>
    <Designer(GetType(TitleDesigner)), _
    Description("Ciudad de origen de la pagina, entendible para Facebook"), _
    AspNetHostingPermission( _
    SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal), _
    AspNetHostingPermission( _
    SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal), _
    Utils.ToolboxTabName("FB.OpenGraph"), _
    ToolboxData("<{0}:Locality runat=""server""></{0}:Locality>")> _
    <ToolboxBitmap(GetType(ResourceFinder), "FbSdkScript.bmp")> _
    Public Class Locality
        Inherits WebControl

#Region "Propiedades"
        Public Property Content As String = ""
#End Region

#Region "Constructores"
        Public Sub New()
            MyBase.New()
        End Sub

        Public Sub New(ByVal Value As String)
            MyBase.New()
            Content = Value
        End Sub
#End Region

#Region "Metodos"
        Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
            writer.WriteLine("<meta property=""og:locality"" content=""" & Content & """ />")
        End Sub
#End Region

    End Class

    ''' <summary>
    ''' Region de origen de la pagina, entendible para Facebook
    ''' </summary>
    ''' <remarks>
    ''' Para poder utilizar los controles sociales de Facebook, es necesario incluir los siguientes espacios de nombres xml
    ''' en el encabezado de la página:
    ''' 
    ''' xmlns:fb="http://ogp.me/ns/fb#" (Controles Facebook)
    ''' xmlns:og="http://ogp.me/ns#"    (Controles OpenGraph)
    ''' 
    ''' El equipo de LNC Producciones
    ''' </remarks>
    <Designer(GetType(TitleDesigner)), _
    Description("Region de origen de la pagina, entendible para Facebook"), _
    AspNetHostingPermission( _
    SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal), _
    AspNetHostingPermission( _
    SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal), _
    Utils.ToolboxTabName("FB.OpenGraph"), _
    ToolboxData("<{0}:Region runat=""server""></{0}:Region>")> _
    <ToolboxBitmap(GetType(ResourceFinder), "FbSdkScript.bmp")> _
    Public Class Region
        Inherits WebControl

#Region "Propiedades"
        Public Property Content As String = ""
#End Region

#Region "Constructores"
        Public Sub New()
            MyBase.New()
        End Sub

        Public Sub New(ByVal Value As String)
            MyBase.New()
            Content = Value
        End Sub
#End Region

#Region "Metodos"
        Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
            writer.WriteLine("<meta property=""og:region"" content=""" & Content & """ />")
        End Sub
#End Region

    End Class

    ''' <summary>
    ''' Codigo postal de la pagina, entendible para Facebook
    ''' </summary>
    ''' <remarks>
    ''' Para poder utilizar los controles sociales de Facebook, es necesario incluir los siguientes espacios de nombres xml
    ''' en el encabezado de la página:
    ''' 
    ''' xmlns:fb="http://ogp.me/ns/fb#" (Controles Facebook)
    ''' xmlns:og="http://ogp.me/ns#"    (Controles OpenGraph)
    ''' 
    ''' El equipo de LNC Producciones
    ''' </remarks>
    <Designer(GetType(TitleDesigner)), _
    Description("Codigo postal de la pagina, entendible para Facebook"), _
    AspNetHostingPermission( _
    SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal), _
    AspNetHostingPermission( _
    SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal), _
    Utils.ToolboxTabName("FB.OpenGraph"), _
    ToolboxData("<{0}:PostalCode runat=""server""></{0}:PostalCode>")> _
    <ToolboxBitmap(GetType(ResourceFinder), "FbSdkScript.bmp")> _
    Public Class PostalCode
        Inherits WebControl

#Region "Propiedades"
        Public Property Content As String = ""
#End Region

#Region "Constructores"
        Public Sub New()
            MyBase.New()
        End Sub

        Public Sub New(ByVal Value As String)
            MyBase.New()
            Content = Value
        End Sub
#End Region

#Region "Metodos"
        Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
            writer.WriteLine("<meta property=""og:postal-code"" content=""" & Content & """ />")
        End Sub
#End Region

    End Class

    ''' <summary>
    ''' Pais de la pagina, entendible para Facebook
    ''' </summary>
    ''' <remarks>
    ''' Para poder utilizar los controles sociales de Facebook, es necesario incluir los siguientes espacios de nombres xml
    ''' en el encabezado de la página:
    ''' 
    ''' xmlns:fb="http://ogp.me/ns/fb#" (Controles Facebook)
    ''' xmlns:og="http://ogp.me/ns#"    (Controles OpenGraph)
    ''' 
    ''' El equipo de LNC Producciones
    ''' </remarks>
    <Designer(GetType(TitleDesigner)), _
    Description("Pais de la pagina, entendible para Facebook"), _
    AspNetHostingPermission( _
    SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal), _
    AspNetHostingPermission( _
    SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal), _
    Utils.ToolboxTabName("FB.OpenGraph"), _
    ToolboxData("<{0}:CountryName runat=""server""></{0}:CountryName>")> _
    <ToolboxBitmap(GetType(ResourceFinder), "FbSdkScript.bmp")> _
    Public Class CountryName
        Inherits WebControl

#Region "Propiedades"
        Public Property Content As String = ""
#End Region

#Region "Constructores"
        Public Sub New()
            MyBase.New()
        End Sub

        Public Sub New(ByVal Value As String)
            MyBase.New()
            Content = Value
        End Sub
#End Region

#Region "Metodos"
        Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
            writer.WriteLine("<meta property=""og:country-name"" content=""" & Content & """ />")
        End Sub
#End Region

    End Class

    ''' <summary>
    ''' Correo de contacto de la pagina, entendible para Facebook
    ''' </summary>
    ''' <remarks>
    ''' Para poder utilizar los controles sociales de Facebook, es necesario incluir los siguientes espacios de nombres xml
    ''' en el encabezado de la página:
    ''' 
    ''' xmlns:fb="http://ogp.me/ns/fb#" (Controles Facebook)
    ''' xmlns:og="http://ogp.me/ns#"    (Controles OpenGraph)
    ''' 
    ''' El equipo de LNC Producciones
    ''' </remarks>
    <Designer(GetType(TitleDesigner)), _
    Description("Correo de contacto de la pagina, entendible para Facebook"), _
    AspNetHostingPermission( _
    SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal), _
    AspNetHostingPermission( _
    SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal), _
    Utils.ToolboxTabName("FB.OpenGraph"), _
    ToolboxData("<{0}:Image runat=""server""></{0}:Image>")> _
    <ToolboxBitmap(GetType(ResourceFinder), "FbSdkScript.bmp")> _
    Public Class Email
        Inherits WebControl

#Region "Propiedades"
        Public Property Content As String = ""
#End Region

#Region "Constructores"
        Public Sub New()
            MyBase.New()
        End Sub

        Public Sub New(ByVal Value As String)
            MyBase.New()
            Content = Value
        End Sub
#End Region

#Region "Metodos"
        Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
            writer.WriteLine("<meta property=""og:email"" content=""" & Content & """ />")
        End Sub
#End Region

    End Class

    ''' <summary>
    ''' Telefono de contacto de la pagina, entendible para Facebook
    ''' </summary>
    ''' <remarks>
    ''' Para poder utilizar los controles sociales de Facebook, es necesario incluir los siguientes espacios de nombres xml
    ''' en el encabezado de la página:
    ''' 
    ''' xmlns:fb="http://ogp.me/ns/fb#" (Controles Facebook)
    ''' xmlns:og="http://ogp.me/ns#"    (Controles OpenGraph)
    ''' 
    ''' El equipo de LNC Producciones
    ''' </remarks>
    <Designer(GetType(TitleDesigner)), _
    Description("Telefono de contacto de la pagina, entendible para Facebook"), _
    AspNetHostingPermission( _
    SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal), _
    AspNetHostingPermission( _
    SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal), _
    Utils.ToolboxTabName("FB.OpenGraph"), _
    ToolboxData("<{0}:PhoneNumber runat=""server""></{0}:PhoneNumber>")> _
    <ToolboxBitmap(GetType(ResourceFinder), "FbSdkScript.bmp")> _
    Public Class PhoneNumber
        Inherits WebControl

#Region "Propiedades"
        Public Property Content As String = ""
#End Region

#Region "Constructores"
        Public Sub New()
            MyBase.New()
        End Sub

        Public Sub New(ByVal Value As String)
            MyBase.New()
            Content = Value
        End Sub
#End Region

#Region "Metodos"
        Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
            writer.WriteLine("<meta property=""og:phone_number"" content=""" & Content & """ />")
        End Sub
#End Region

    End Class

    ''' <summary>
    ''' Numero de fax de la pagina, entendible para Facebook
    ''' </summary>
    ''' <remarks>
    ''' Para poder utilizar los controles sociales de Facebook, es necesario incluir los siguientes espacios de nombres xml
    ''' en el encabezado de la página:
    ''' 
    ''' xmlns:fb="http://ogp.me/ns/fb#" (Controles Facebook)
    ''' xmlns:og="http://ogp.me/ns#"    (Controles OpenGraph)
    ''' 
    ''' El equipo de LNC Producciones
    ''' </remarks>
    <Designer(GetType(TitleDesigner)), _
    Description("Numero de fax de la pagina, entendible para Facebook"), _
    AspNetHostingPermission( _
    SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal), _
    AspNetHostingPermission( _
    SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal), _
    Utils.ToolboxTabName("FB.OpenGraph"), _
    ToolboxData("<{0}:FaxNumber runat=""server""></{0}:FaxNumber>")> _
    <ToolboxBitmap(GetType(ResourceFinder), "FbSdkScript.bmp")> _
    Public Class FaxNumber
        Inherits WebControl

#Region "Propiedades"
        Public Property Content As String = ""
#End Region

#Region "Constructores"
        Public Sub New()
            MyBase.New()
        End Sub

        Public Sub New(ByVal Value As String)
            MyBase.New()
            Content = Value
        End Sub
#End Region

#Region "Metodos"
        Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
            writer.WriteLine("<meta property=""og:fax_number"" content=""" & Content & """ />")
        End Sub
#End Region

    End Class

#End Region

#Region "Diseñadores"

    Public Class TitleDesigner
        Inherits ControlDesigner

        Public Overrides Function GetDesignTimeHtml() As String
            Dim out As String = ""
            out = String.Format("<button style=""color: Black; background-color: #F7F7F7; font-size: 8pt;"">og:<strong>Title</strong></button>")
            Return out
        End Function

    End Class

#End Region

End Namespace